xml.dll - mIRC XML Parser DLL
Ce DLL permet de créer des parsers XML et de définir des aliases ou signaux mIRC qui seront appelés en
fonction des divers évènements recontrés lors du parsing d'un fichier ou d'un buffer. Il s'agit
d'un parser de type évènementiel non-validateur.
Table des Matières
Introduction
Ce DLL a été développé pour permettre l'utilisation du format XML
au sein du logiciel mIRC
dans des conditions satisfaisantes en terme de flexibilité et de performance.
Ce que fait ce DLL pourrait être entièrement réalisé en mIRC scripting mais les performances à
niveau de fonctionnalité égale seraient bien différentes...
L'utilisateur créé des instances de parsers XML et défini ses propres aliases (commandes en générale) qui seront
appelées par le DLL en fonctions des évènements XML rencontrés lors du parsing d'un fichier ou
d'un buffer. L'utilisateur doit donc organiser lui même ses handlers aliases chargées de
traiter les données que le parser leurs retourne.
Installation
Le fichier DLL est nommé xml.dll et peut être placé n'importe où du moment que mIRC
(le script) connaisse son répertoire d'installation (pour pouvoir utiliser $dll ou /dll). Un répertoire
contenant des espaces ne posera pas de problèmes.
Le DLL est livré dans un package .zip contenant également un fichier d'aide et
de référence .html (ce fichier), les sources du DLL ainsi qu'un fichier .xml d'exemple et un fichier de script .mrc.
Si ce n'est pas le cas, il est vivement recommandé de télécharger le dernier package officiel
sur le site www.ScriptsDB.org, section DLLs. Dézippez le package à l'emplacement
de votre choix. L'installation est terminée.
Utilisation du DLL
Pour appeller les fonctions du DLL, vous pouvez utiliser deux syntaxes :
/dll <xml.dll> <function> <parameters>
$dll(<xml.dll>,<function>,<parameters>)
La 2ieme syntaxe avec $dll()
est recommandée car le DLL retourne dans ce cas une valeur indiquant
un succes ou un échec. Les messages retournés sont S_OK
ou E_<ERROR_CODE>
en cas d'erreur. Les différentes erreurs sont listées pour chaque fonctions du DLL dans la partie
Référence.
Le nombre de fonctions disponibles peut paraitre déroutant à première vue, mais il faut savoir
que la plupart sont optionnelles et qu'un simple jeu de quelques fonctions suffit à effectuer
la majorité des opérations les plus fréquentes en matière de parsing XML.
La manière de procéder la plus basique est de créer un parser (create_parser
),
associer des handlers aliases simples (set_handler_startelement
,
set_handler_endelement
,
set_handler_attribute
et
set_handler_chardata
),
associer un fichier xml (set_file
),
parser le fichier (parse_file
) et
finalement libérer le parser (free_parser
).
Pour un exemple plus concret, allez voir la section Exemple de Script mIRC de ce document,
mais également les deux fichiers .xml et .mrc fournis dans le package du DLL.
Les fonctions du DLL ont été renommées par rapport à la précédente version (0.0.1).
Ces anciennes fonctions sont toujours supportées mais ne sont plus documentées.
Allez voir la section Versions Changes pour plus d'informations.
Référence
Listing des fonctions du DLL à utiliser avec l'une des deux syntaxes décrites au chapitre
précèdent. Pour chaque fonction, les paramètres entre < >
sont requis
et ceux entre [ ]
sont optionnels.
Fonctions de Création de Parsers
Créé un parser nommé name. Ce nom, qui ne doit pas contenir d'espace, servira de handle (identifiant) pour les autres fonctions
relatives à ce parser. Vous pouvez manipuler plusieurs parsers en même temps.
Un maximum de 256 parsers simultanés est autorisé.
Vous pouvez créer un parser déjà existant, et dans ce cas il sera resetté (file, buffer, handlers..).
La fonction retourne S_OK
ou en cas d'erreur: E_OUT_OF_MEMORY
,
E_TOO_MANY_PARSERS_ALLOCATED
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,create_parser,demo)
Détruit un parser précédement créé avec create_parser
.
Une fois vos opérations de parsing terminées, il est recommandé d'utiliser cette fonction pour
libérer les ressources mémoire allouées au parser name.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
,
E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,free_parser,demo)
Fonctions de Parsing de Fichiers
Associe un fichier xml au parser. Si le fichier xml n'est pas précisé, et qu'un fichier était
déjà associé au même parser, celui ci sera resetté (il n'y aura plus de fichier associé).
Le fichier doit avoir un pathfile absolu ou alors relatif par rapport à mirc.exe.
Vous n'êtes pas obligé d'entourer le nom du fichier par des " (quotes) si
des espaces figurent dans son pathname.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,set_file,demo config\settings.xml)
Retourne le nom du fichier xml associé au parser. Si aucun fichier n'est associé,
la fonction ne retourne rien ($null).
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,get_file,demo)
Parse le fichier précédement associé au parser avec set_file
. Pendant le parsing du fichier,
le parser appellera les handlers aliases qui auront été configurées grâce aux Fonctions des Handlers.
Vous pouvez modifier "à la vollée" pendant le parsing les différentes handlers aliases.
La fonction retourne S_OK
ou en cas d'erreur: E_OUT_OF_MEMORY
,
E_INVALID_PARSER
, E_INVALID_PARAMETERS
, E_INVALID_FILE
Exemple:
$dll(xml.dll,parse_file,demo)
Fonctions de Parsing de Buffers
Un buffer est associé à chaque parser et peux recevoir des données XML sous forme de chaines de caractères.
Ce buffer, limité à 4096 bytes, pourra être parsé de la même manière qu'un fichier.
Ajoute xml_string à la fin du buffer du parser. Vous pouvez appeler cette fonction plusieurs fois de suite.
Si la chaines XML est nulle, le buffer ne sera pas affecté. Il faut utiliser free_buffer
pour le resetter.
La fonction retourne S_OK
ou en cas d'erreur: E_OUT_OF_MEMORY
,
E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,set_buffer,demo <node type="test">ok blah)
$dll(xml.dll,set_buffer,demo <bl0x/></node>)
Reset le buffer (le buffer du parser sera vidé).
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,free_buffer,demo)
Retourne les données du buffer sous forme de chaines de caractères. Comme le buffer peut contenir plus de données que
mIRC peut en recevoir (limité à environ 900 bytes), les integers start et len peuvent être précisés optionnellement.
Notez que l'index du premier caractère du buffer commence à 0 et non à 1. La fonction get_buffer_len
permet
de connaitre la taille du buffer.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,get_buffer,demo)
$dll(xml.dll,get_buffer,demo 8 100)
Retourne la taille du buffer en bytes (caractères).
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,get_buffer_len,demo)
Parse le buffer du parser. Lors du parsing, le DLL appellera les handlers aliases qui auront été configurées grâce aux Fonctions des Handlers.
Vous pouvez modifier "à la vollée" pendant le parsing les différentes handlers aliases.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Exemple:
$dll(xml.dll,parse_buffer,demo)
Fonctions des Handlers
Chaque fonctions set_handler_*
permet d'associer une handler_alias (ou commande) mIRC
à un évenement XML spécifique. Si handler_alias n'est pas précisée et qu'une précédente alias
avait été configurée, celle ci sera resettée et le parser ignorera cette étape lors du parsing.
Le paramètre handler_alias dans les fonctions décrites ci-dessous peut être n'importe quel type de commande valide dans mIRC (commande, custom alias, signal ..) et peut
donc contenir des espaces et paramètres spécifiques. S'il s'agit d'une custom alias, elle doit être globale (pas de locale: alias -l).
Associe une alias mIRC que le parser appellera chaque fois qu'un élément XML (aussi appellé tag ou node) d'ouverture sera rencontré
lors du parsing d'un fichier ou d'un buffer.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <startelement>
Exemple:
<!-- XML -->
<element>
<element />
; mIRC
$dll(xml.dll,set_handler_startelement,demo startel)
alias startel {
; $1 = demo
; $2 = nom de l'élément d'ouverture courant
}
Exemple avec un /signal :
$dll(xml.dll,set_handler_startelement,demo .signal -n startel)
on *:signal:startel: {
; $1 = demo
; $2 = nom de l'élément d'ouverture courant
}
Associe une alias mIRC que le parser appellera chaque fois qu'un élément XML de fermeture sera rencontré.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <endelement>
Exemple:
<!-- XML -->
</element>
<element />
; mIRC
$dll(xml.dll,set_handler_endelement,demo endel)
alias endel {
; $1 = demo
; $2 = nom de l'élément de fermeture courant
}
Associe une alias mIRC que le parser appellera chaque fois qu'un attribut d'un élement XML sera rencontré lors du parsing.
handler_alias sera appellée autant de fois qu'il y a d'attributs dans l'élement.
Notez que le parsing des attributs est aussi compatible avec la syntaxe HTML: quand " et ' sont homis autour des valeurs des attributs.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <element> <attribute_name> <attribute_value>
Exemple:
<!-- XML -->
<element attrib="valeur"
autre='autre valeur'>
; mIRC
$dll(xml.dll,set_handler_attribute,demo att)
alias att {
; $1 = demo
; $2 = nom de l'élément courant
; $3 = nom de l'attribut courant
; $4- = valeur de l'attribut
}
Associe une alias mIRC que le parser appellera chaque fois qu'un début de données ne faisant pas partie d'entités XML sera rencontré (donc les "data").
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
<element>debut de chardata
; mIRC
$dll(xml.dll,set_handler_startchardata,demo startdata)
alias startdata {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une fin de données ne faisant pas partie d'entités XML sera rencontrée (donc les "data").
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
fin de chardata</element>
; mIRC
$dll(xml.dll,set_handler_endchardata,demo enddata)
alias enddata {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de données ne faisant pas partie d'entités XML sera rencontrée (donc les "data").
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <data>
Exemple:
<!-- XML -->
<element>
chardata
autre ligne de chardata
</element>
; mIRC
$dll(xml.dll,set_handler_chardata,demo data)
alias data {
; $1 = demo
; $2- = valeur de la ligne de données courante
}
Associe une alias mIRC que le parser appellera chaque fois qu'un début de commentaire dans le XML sera rencontré.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
<!-- debut de commentaire
; mIRC
$dll(xml.dll,set_handler_startcomment,demo startcmt)
alias startcmt {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une fin de commentaire dans le XML sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
fin de commentaire -->
; mIRC
$dll(xml.dll,set_handler_endcomment,demo endcmt)
alias endcmt {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de commentaire dans le XML sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <comment>
Exemple:
<!-- XML -->
<!-- commentaire
autre ligne de commentaire -->
; mIRC
$dll(xml.dll,set_handler_comment,demo cmt)
alias cmt {
; $1 = demo
; $2- = valeur de la ligne de commentaire courante
}
Associe une alias mIRC que le parser appellera chaque fois qu'un début de données CDATA sera rencontré.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
<![CDATA[ debut de CDATA
; mIRC
$dll(xml.dll,set_handler_startcdata,demo startcdat)
alias startcdat {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une fin de données CDATA sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
fin de CDATA ]]>
; mIRC
$dll(xml.dll,set_handler_endcdata,demo endcdat)
alias enddat {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de données CDATA sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <cdata>
Exemple:
<!-- XML -->
<![CDATA[
CDATA
autre ligne de CDATA
]]>
; mIRC
$dll(xml.dll,set_handler_cdata,demo cdat)
alias cdat {
; $1 = demo
; $2- = valeur de la ligne de CDATA courante
}
Associe une alias mIRC que le parser appellera chaque fois qu'un début de processing instructions sera rencontré.
La déclaration d'un document XML <?xml .. ?>
n'est pas affectée par cet évenement,
mais par set_handler_xmldecl
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
<?spec debut de processing instructions
; mIRC
$dll(xml.dll,set_handler_startprocessing,demo startprocess)
alias startprocess {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une fin de processing instructions sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
fin de processing instructions ?>
; mIRC
$dll(xml.dll,set_handler_endprocesing,demo endprocess)
alias endprocess {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une ligne de processing instructions sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <processingdata>
Exemple:
<!-- XML -->
<?spec processing instructions
autre ligne de processing instructions
?>
; mIRC
$dll(xml.dll,set_handler_processing,demo process)
alias process {
; $1 = demo
; $2- = valeur de la ligne de processing instruction courante
}
Associe une alias mIRC que le parser appellera chaque fois qu'un début d'entitée SGML non prise en
compte par les diverses fonctions précédentes sera rencontré. Il peut s'agir par exemple de déclaration DTD: <!(ENTITY | DOCTYPE .. ) .. >
.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
<!ELEMENT debut d'entitée 'SGML' par défaut
; mIRC
$dll(xml.dll,set_handler_startdefault,demo startdef)
alias startdef {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une fin d'entitée SGML non prise en
compte par les diverses fonctions précédentes sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit le paramètre: <name>
Exemple:
<!-- XML -->
fin d'entitée 'SGML' par défaut >
; mIRC
$dll(xml.dll,set_handler_enddefault,demo enddef)
alias enddef {
; $1 = demo
}
Associe une alias mIRC que le parser appellera chaque fois qu'une ligne d'entitée SGML non prise en
compte par les diverses fonctions précédentes sera rencontrée.
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <defaultdata>
Exemple:
<!-- XML -->
<!ELEMENT BL0X - O EMPTY
-- client-side blah map bl0x -->
; mIRC
$dll(xml.dll,set_handler_default,demo def)
alias def {
; $1 = demo
; $2- = valeur de la ligne d'entitée par default courante
}
Associe une alias mIRC que le parser appellera si une declaration XML est présente dans le document:
<?xml version="ver" [encoding="enc"] [standalone="(yes|no)"] ?>
La fonction retourne S_OK
ou en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
handler_alias recoit les paramètres: <name> <version> <encoding> <standalone>
Exemple:
<?xml version="1.0"
encoding="ISO-8859-1" ?>
; mIRC
$dll(xml.dll,set_handler_xmldecl,demo xmld)
alias xmld {
; $1 = demo
; version: default 1.0
; $2 = 1.0
; encoding: default UTF-8
; $3 = ISO-8859-1
; standalone: default 1, 0 si standalone="no"
; $4 = 1
}
Retourne l'alias mIRC précédement configurée avec set_handler_startelement
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_endelement
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_attribute
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_startchardata
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_endchardata
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_chardata
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_startcomment
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_endcomment
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_comment
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_startcdata
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_endcdata
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_cdata
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_startprocessing
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_endprocessing
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_processing
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_startdefault
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_enddefault
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_default
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne l'alias mIRC précédement configurée avec set_handler_xmldecl
.
Si aucune alias n'est associée, la fonction ne retourne rien.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Retourne le path absolu dans la hierarchie du XML à un instant donné pendant le parsing du fichier ou du buffer. Le path retourné est
de la forme:
element1/element2/../elementN
Le char "/" est employé comme tokenizer d'éléments.
Note: ce path absolu est mis à jour avant l'ouverture ou la fermeture de l'élément. Autrement dit, un élément d'ouverture
figurera dans ce path (en dernier token) alors qu'un élément de fermeture n'y figurera plus.
La fonction retourne en cas d'erreur: E_INVALID_PARSER
, E_INVALID_PARAMETERS
Autres Fonctions
Retourne quelques informations à propos du DLL: nom, version, auteur, contact.
Retourne uniquement la version du DLL.
Exemple de Script mIRC
Fichier XML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- xmldemo.xml -->
<config>
<server name="webnet">
<address port="6667-7000">irc.webmatser.com</address>
<nick>sax</nick>
<perform type="on connect">
<![CDATA[
mode $me -nMpe
ns identify sax mypass
]]>
</perform>
</server>
<server name="localhost">
<address>127.0.0.1</address>
</server>
</config>
Script mIRC:
; /xmldemo
alias xmldemo {
; dll and .xml files
var %dll = $+(",$scriptdirxml.dll,")
var %xml = $scriptdirxmldemo.xml
var %w = @xmldemo
window -a %w | clear %w
if (!$isfile(%dll)) { echo %w Error - missing: %dll | return }
if (!$isfile(%xml)) { echo %w Error - missing: %xml | return }
; parser name
var %n = demo
echo %w Creating parser %n
var %a = $dll(%dll,create_parser,%n)
if (%a != S_OK) { echo %w Error - create_parser: %a | return }
echo %w Setting handler aliases (commandes)
dll %dll set_handler_xmldecl %n hxmldecl
dll %dll set_handler_startelement %n hstartelement
dll %dll set_handler_endelement %n hendelement
dll %dll set_handler_attribute %n hattribute
dll %dll set_handler_chardata %n hchardata
dll %dll set_handler_cdata %n hcdata
echo %w Setting XML file : %xml
dll %dll set_file %n %xml
; global var: dll pathname will be use in start and end element handlers
%xmldemo.dll = %dll
echo %w Parsing :
linesep %w
var %a = $dll(%dll,parse_file,%n)
if (%a != S_OK) { echo -a Error - parse_file: %a }
linesep %w
echo %w Deleting parser %n
dll %dll free_parser %n
; unsets global var
unset %xmldemo.*
}
; handler aliases (non local)
alias hxmldecl {
echo @xmldemo XMLdecl (version, encoding, standalone): $2-
}
alias hstartelement {
echo $color(notice) @xmldemo Startelement: $2 ( $dll(%xmldemo.dll,get_abspath,$1) )
}
alias hendelement {
echo $color(notice) @xmldemo Endelement: $2 ( $dll(%xmldemo.dll,get_abspath,$1) )
}
alias hattribute {
echo $color(join) @xmldemo Attribute: $2-
}
alias hchardata {
echo @xmldemo Chardata: $2-
}
alias hcdata {
echo @xmldemo CDATA: $2-
}
Versions Changes
xml.dll 0.1.1 - June 2003
- Implémentation en C++.
- Amélioration des algorithmes de parsing.
- Meilleur allocation et gestion de la mémoire.
- Ajout de nombreuses handlers fonctions.
- Chaque fonction set_*
a son équivalent get_*
- Renommage des fonctions de la précédente version :
Ces anciennes fonctions sont toujours supportées mais ne sont plus documentées.
- Fichier d'aide et référence traduit en francais.
- Finalement, la taille du dll est réduite de 40% !
xml.dll 0.0.1 - April 2003
Première release.
Auteur, Credits
sax
irc_x@hotmail.com
www.ScriptsDB.org
#scriptsdb.org @webnet @undernet
Credits :
W3C - XML Draft
mIRC - load->mHwnd
ClickHeRe - Testing, support
+ tous ceux qui ont fait des suggestions et autres remarques !
Document rédigé par sax le 14/06/2003